package com.tbit.main.service;

import com.tbit.main.pojo.AccountUser;
import com.tbit.main.pojo.BatteryMachine;
import com.tbit.main.pojo.Machine;
import com.tbit.main.pojo.PowerChangeLogSta;

import java.util.List;

/**
 * @author LMY
 * @create 2021-05-27 14:29
 * 车辆电池绑定表
 */
public interface BatteryMachineService {

    /**
     * 发送换电指令
     *
     * @param accountUser
     * @param serNO
     * @param machine
     * @param type
     */
    void control(AccountUser accountUser, String serNO, Machine machine, Integer type);

    /**
     * 添加
     *
     * @param batteryMachine
     */
    void insert(BatteryMachine batteryMachine);

    /**
     * 更改
     *
     * @param machineId
     * @param batteryNO
     * @param accountUserId
     */
    void update(Integer machineId, Integer batteryId, String batteryNO, Integer accountUserId);

    /**
     * 根据车辆id获取车辆电池绑定
     *
     * @param machineId
     * @return
     */
    BatteryMachine getByMachineId(Integer machineId);

    /**
     * 根据电池编号查询
     *
     * @param batteryNO
     * @return
     */
    BatteryMachine getByBatteryNO(String batteryNO);

    /**
     * 根据运营区域查询
     *
     * @param accountId
     * @return
     */
    List<BatteryMachine> getByAccountId(Integer accountId);

    /**
     * 根据分区查询
     *
     * @param regionIds
     * @return
     */
    List<BatteryMachine> getByRegionIds(List<Integer> regionIds);

    /**
     * 按时间分组统计
     *
     * @param agentId
     * @param userType
     * @param usermainId
     * @param startTime
     * @param endTime
     * @return
     */
    public List<PowerChangeLogSta> groupByTime(Integer agentId, Integer userType, Integer usermainId, String startTime, String endTime);

    /**
     * 根据时间查询
     *
     * @param accountId
     * @param userMainId
     * @param startTime
     * @param endTime
     * @return
     */
    public List<BatteryMachine> getByTime(Integer accountId, Integer userMainId, String startTime, String endTime);

    /**
     * 根据电池id批量查询电池绑定
     *
     * @param batterIds
     * @return
     */
    List<BatteryMachine> getByBatterIds(List<Integer> batterIds);

    /**
     * 根据车辆id查询
     *
     * @param machineIds
     * @return
     */
    List<BatteryMachine> getByMachineIds(List<Integer> machineIds);

    void changeCheck(AccountUser accountUser, String userCode, String batteryNO, Integer mapType, Double lon, Double lat);
}
